<?php
declare (strict_types = 1);

namespace app\controller\v1\api;

use app\BaseController;
use app\common\Send;
use think\App;
use think\Request;
use app\service\TaskService;
use app\validate\Task As TaskValidate;
class Task extends BaseController
{
    use Send;

    protected $taskService;

    public function __construct(App $app, TaskService $taskService)
    {
        parent::__construct($app);
        $this->taskService = $taskService;
    }

    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        $data = $this->request->param();
        $data['status']=1;
        $result = $this->taskService->list($data);
        return self::success($result);
    }

    /**
     * 保存任务信息
     *
     * 该方法主要用于处理任务数据的保存操作，包括任务的创建和更新通过接收请求参数，
     * 进行数据验证，并调用任务服务层完成实际的数据保存逻辑
     *
     * @param Request $request 请求对象，用于获取用户提交的任务数据
     * @return array 返回保存结果，包括成功与否及相应的提示信息
     */
    public function save(Request $request)
    {
        // 获取请求参数，为后续的数据验证和保存做准备
        $data = $request->param();

        // 数据验证，确保接收到的数据符合规范，提高数据安全性
        (new TaskValidate)->goCheck($data);

        // 调用任务服务层的保存方法，执行实际的数据保存操作
        $result = $this->taskService->save($data);

        // 返回保存结果，通知调用者操作的结果
        return self::success($result);
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
        $result = $this->taskService->read($id);
        return self::success($result);
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        $data = $request->param();
        (new TaskValidate)->goCheck($data);
        return $this->taskService->update($id, $data);
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        $result = $this->taskService->delete($id);
        return self::success($result);
    }

    public function all()
    {
        $result = $this->taskService->all();

        return self::success($result);
    }
}
